<?php

class Doctrine_Model_ProyectoDoctrineDao {

    public function getEntityManager() {
        if (Zend_Registry::isRegistered('em')) {
            return Zend_Registry::get('em');
        }
        return null;
    }

    public function obtenerTodos() {
        return $this->getEntityManager()
                ->createQuery('select p from Doctrine_Model_Entities_Proyecto p where p.borrado=0')
                ->getResult();
    }
    
 
   

    public function obtenerPorId($id) {
        return $this->getEntityManager()->find('Doctrine_Model_Entities_Proyecto', $id);
    }

    
    public function guardar(Doctrine_Model_Entities_Proyecto $proyecto) {
        try {
            
            $this->getEntityManager()->persist($proyecto);
            $this->getEntityManager()->flush();
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    public function eliminar(Doctrine_Model_Entities_Proyecto $proyecto) {
        try {
            $this->getEntityManager()->remove($persona);
            $this->getEntityManager()->flush();
        
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
          
            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    
    public function toArrayCollection($coleccion) {
        $arrayCollection = new \Doctrine\Common\Collections\ArrayCollection();

        if (is_array($coleccion)) {
            foreach ($coleccion as $objeto) {
                $arrayCollection->add($objeto);
            }
        } else {
            if ($coleccion != NULL) {
                $arrayCollection->add($coleccion);
            }
        }
        return $arrayCollection;
    }

    
    
    public function pruebaNativoSql() {
        $rsm = new \Doctrine\ORM\Query\ResultSetMapping();
        $rsm->addScalarResult('antiguedad_anios', 'antiguedad_anios');

        $query = $this->getEntityManager()->createNativeQuery('SELECT (YEAR(CURRENT_DATE) - YEAR(fecha_ingreso)) - (RIGHT(CURRENT_DATE,5) < RIGHT(fecha_ingreso,5)) AS antiguedad_anios FROM Datos_laborales where persona_id=23', $rsm);


        var_dump($query->getResult());
    }

}

